﻿#include<iostream>
#include<set>
using namespace std;

//int main()
//{
//	set<int> s1;
//	s1.insert(1);
//	s1.insert(2);
//	s1.insert(3);
//	s1.insert(4);
//	/*set<int>::iterator i = s1.begin();
//	while (i != s1.end())
//	{
//		cout << *i << " ";
//		i++;
//	}
//	cout << endl;*/
//	set<int>::reverse_iterator i = s1.rbegin();
//	while (i != s1.rend())
//	{
//		cout << *i << " ";
//		i++;
//	}
//	cout << endl;
//
//	return 0;
//}

//int main()
//{
//	set<string> s1 = { "afdfs","fang","dfsadf" };
//
//	for (auto i : s1)
//	{
//		cout << i << " ";
//	}
//	cout << endl;
//}
//
//int main()
//{
//	multiset<int> s1 = { 1,2,3,3,4,4,5,5 };
//
//	multiset<int>::iterator add = s1.find(4);
//	while (add != s1.end() && *add == 4)
//	{
//		cout << *add << " ";
//		add++;
//	}
//
//	return 0;
//}

//int main()
//{
//	set<int> s1 = { 2,3,4,5,6,7 };
//	s1.insert(4);
//	if (s1.count(5))
//	{
//		cout << "在" << endl;
//	}
//	else
//	{
//		cout << "不在" << endl;
//	}
//
//	return 0;
//}

//#include<map>
//int main()
//{
//	pair<string, string> kv1 = { "sdsgfgdsh","肻" };
//	map<string, string> m1 = { kv1 ,{"sdgfdsf","USD回复"} ,{"rtuuyuti","内部"} };
//
//	map<string, string>::iterator it = m1.begin();
//	while (it != m1.end())
//	{
//		cout << (*it).first << ":" << (*it).second << " ";
//		it++;
//	}
//	cout << endl;
//
//	return 0;
//}

//#include<set>
//#include<vector>
//int main()
//{
//	//迭代器区间构造 
//	set<int> s1 = {3,4,5,6,7,8,9,0};
//	//vector<int> s1 = { 3,4,5,6,7,8,9,0 };
//	set<int> s2 = { s1.begin(),s1.end() };
//
//	for (auto i : s2)
//	{
//		cout << i << " ";
//	}
//	cout << endl;
//
//	return 0;
//}


//int main()
//{
//	//使用列表构造构造 
//	set<int> s1 = { 3,4,5,6,7,8,9,0 };
//
//	//拷贝构造
//	set<int> s2 = s1;
//
//	for (auto i : s2)
//	{
//		cout << i << " ";
//	}
//	cout << endl;
//	return 0;
//}


//int main()
//{
//	set<int> s1 = { 34,5,23,56,12,4 };
//	//反向迭代器
//	set<int>::reverse_iterator it = s1.rbegin();
//	while (it != s1.rend())
//	{
//		cout << *it << " ";
//		it++;
//	}
//	cout << endl;
//
//	return 0;
//}

//int main()
//{
//	//数值如果已经在容器中存在的值不会插⼊
//	set<int> s1 = { 1,1,2,2,3,3,4,4 };
//
//	for (auto it : s1)
//	{
//		cout << it << " ";
//	}
//	cout << endl;
//}
//int main()
//{
//	set<int> s1 = { 1,2,3,4,5 };
//	//查找val，返回val所在的迭代器，没有找到返回end() 
//	set<int>::iterator it = s1.find(99);
//	cout << *it << endl;
//
//	return 0;
//}


#include<iostream>
#include<set>
using namespace std;

int main()
{
	// 去重+升序排序 
	set<int> s;
	// 去重+降序排序（给⼀个⼤于的仿函数） 
	//set<int, greater<int>> s;
	s.insert(5);
	s.insert(2);
	s.insert(7);
	s.insert(5);

	//set<int>::iterator it = s.begin();
	auto it = s.begin();
	while (it != s.end())
	{
		// error C3892: “it”: 不能给常量赋值 
        // *it = 1;
		cout << *it << " ";
		++it;
	}
	cout << endl;


}